-
Notifications
You must be signed in to change notification settings - Fork 1.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Gutenberg] Add error boundary components and exception logging #20359
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@wordpress-mobile/apps-infrastructure I'd appreciate it if someone could take a look at this approach for uploading the React Native's JavaScript source map file to Sentry. I'm mostly seeking validation of the approach, thoughts/feedback or better alternatives. Thank you very much for the help 🙇 !
To give some context on the approach: The source map is generated as part of the Gutenerg Mobile build process, the files are being passed as assets via the library (reference). Sentry uses the JavaScript bundle and the source map to symbolicate the stack trace and reference the exact code line that caused the exception (reference).
The approach followed here consists in:
- Add Gem
fastlane-plugin-sentry
to use thesentry_upload_sourcemap
action. - Add
upload_gutenberg_sourcemaps
helper function to build lanes. - To invoke
sentry_upload_sourcemap
we need a set of parameters that are fetched with the following steps:- Load Sentry properties to obtain the token, organization and project slugs.
- Locate the bundle and source map files passed as assets of the Gutenberg Mobile dependency, based on app, build flavor, and build type. Note that the path points to
intermediates
folder within the project's build path.
- Invoke the
upload_gutenberg_sourcemaps
in the different build lanes.
As a first approach, I tried to copy the bundle and source map files to a different folder during the asset merging step in the build process. However, I finally discarded this option because seemed unnecessary. Here you can see the changes.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Approach looks good to me; thanks for documenting it all with comments 👍
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks @AliSoftware for taking a look and validating the approach, I appreciate it 🙇 .
Co-authored-by: Olivier Halligon <[email protected]>
📲 You can test the changes from this Pull Request in WordPress by scanning the QR code below to install the corresponding build.
|
📲 You can test the changes from this Pull Request in Jetpack by scanning the QR code below to install the corresponding build.
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Tested via #20435 (comment)
Found 1 violations: The PR caused some dependency changes (expand to see details)
+--- project :libs:analytics
-| \--- com.automattic:Automattic-Tracks-Android:3.4.0
-| +--- io.sentry:sentry-bom:6.32.0
-| | +--- io.sentry:sentry-android:6.32.0 (c)
-| | +--- io.sentry:sentry-android-fragment:6.32.0 (c)
-| | +--- io.sentry:sentry-android-okhttp:6.32.0 (c)
-| | +--- io.sentry:sentry-android-core:6.32.0 (c)
-| | +--- io.sentry:sentry-android-ndk:6.32.0 (c)
-| | \--- io.sentry:sentry:6.32.0 (c)
-| +--- io.sentry:sentry-android -> 6.32.0
-| | +--- io.sentry:sentry-android-core:6.32.0
-| | | +--- io.sentry:sentry:6.32.0
-| | | +--- androidx.lifecycle:lifecycle-process:2.2.0 -> 2.6.2 (*)
-| | | +--- androidx.lifecycle:lifecycle-common-java8:2.2.0 -> 2.6.2 (*)
-| | | \--- androidx.core:core:1.3.2 -> 1.12.0 (*)
-| | \--- io.sentry:sentry-android-ndk:6.32.0
-| | +--- io.sentry:sentry:6.32.0
-| | \--- io.sentry:sentry-android-core:6.32.0 (*)
-| +--- io.sentry:sentry-android-okhttp -> 6.32.0
-| | +--- io.sentry:sentry:6.32.0
-| | \--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.0 -> 1.9.10 (*)
-| +--- io.sentry:sentry-android-fragment -> 6.32.0
-| | \--- io.sentry:sentry:6.32.0
-| +--- androidx.annotation:annotation:1.1.0 -> 1.6.0 (*)
-| +--- com.squareup.okhttp3:okhttp:4.9.0 -> 4.11.0
-| | +--- com.squareup.okio:okio:3.2.0 -> 3.6.0
-| | | \--- com.squareup.okio:okio-jvm:3.6.0
-| | | +--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.9.10 (*)
-| | | \--- org.jetbrains.kotlin:kotlin-stdlib-common:1.9.10 -> 1.9.22 (*)
-| | +--- org.jetbrains.kotlin:kotlin-stdlib:1.6.20 -> 1.9.22 (*)
-| | \--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.20 -> 1.9.10 (*)
-| +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.4 -> 1.7.3 (*)
-| \--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.21 -> 1.9.10 (*)
+| \--- com.automattic:Automattic-Tracks-Android:3.5.0
+| +--- io.sentry:sentry-bom:7.5.0
+| | +--- io.sentry:sentry-android:7.5.0 (c)
+| | +--- io.sentry:sentry-android-fragment:7.5.0 (c)
+| | +--- io.sentry:sentry-android-okhttp:7.5.0 (c)
+| | +--- io.sentry:sentry-android-core:7.5.0 (c)
+| | +--- io.sentry:sentry-android-ndk:7.5.0 (c)
+| | +--- io.sentry:sentry:7.5.0 (c)
+| | \--- io.sentry:sentry-okhttp:7.5.0 (c)
+| +--- io.sentry:sentry-android -> 7.5.0
+| | +--- io.sentry:sentry-android-core:7.5.0
+| | | +--- io.sentry:sentry:7.5.0
+| | | +--- androidx.lifecycle:lifecycle-process:2.2.0 -> 2.6.2 (*)
+| | | +--- androidx.lifecycle:lifecycle-common-java8:2.2.0 -> 2.6.2 (*)
+| | | \--- androidx.core:core:1.3.2 -> 1.12.0 (*)
+| | \--- io.sentry:sentry-android-ndk:7.5.0
+| | +--- io.sentry:sentry:7.5.0
+| | \--- io.sentry:sentry-android-core:7.5.0 (*)
+| +--- io.sentry:sentry-android-okhttp -> 7.5.0
+| | +--- io.sentry:sentry:7.5.0
+| | +--- io.sentry:sentry-okhttp:7.5.0
+| | | +--- io.sentry:sentry:7.5.0
+| | | \--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.0 -> 1.9.10 (*)
+| | \--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.0 -> 1.9.10 (*)
+| +--- io.sentry:sentry-android-fragment -> 7.5.0
+| | \--- io.sentry:sentry:7.5.0
+| +--- androidx.annotation:annotation:1.1.0 -> 1.6.0 (*)
+| +--- com.squareup.okhttp3:okhttp:4.9.0 -> 4.11.0
+| | +--- com.squareup.okio:okio:3.2.0 -> 3.6.0
+| | | \--- com.squareup.okio:okio-jvm:3.6.0
+| | | +--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.9.10 (*)
+| | | \--- org.jetbrains.kotlin:kotlin-stdlib-common:1.9.10 -> 1.9.22 (*)
+| | +--- org.jetbrains.kotlin:kotlin-stdlib:1.6.20 -> 1.9.22 (*)
+| | \--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.20 -> 1.9.10 (*)
+| +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.4 -> 1.7.3 (*)
+| \--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.21 -> 1.9.10 (*)
+--- project :libs:editor
-| \--- org.wordpress.gutenberg-mobile:react-native-gutenberg-bridge:v1.115.0-alpha3
-| +--- com.facebook.fresco:animated-gif:2.0.0
-| | +--- com.parse.bolts:bolts-tasks:1.4.0
-| | +--- com.facebook.soloader:soloader:0.6.0 -> 0.10.5 (*)
-| | +--- com.facebook.fresco:fbcore:2.0.0 -> 3.1.3 (*)
-| | \--- com.facebook.fresco:animated-base:2.0.0
-| | +--- com.facebook.fresco:fbcore:2.0.0 -> 3.1.3 (*)
-| | +--- com.facebook.fresco:imagepipeline-base:2.0.0 -> 3.1.3 (*)
-| | +--- com.facebook.fresco:imagepipeline:2.0.0 -> 3.1.3 (*)
-| | +--- com.facebook.fresco:animated-drawable:2.0.0
-| | | +--- com.facebook.fresco:imagepipeline:2.0.0 -> 3.1.3 (*)
-| | | +--- com.facebook.fresco:drawee:2.0.0 -> 3.1.3 (*)
-| | | \--- com.facebook.fresco:fbcore:2.0.0 -> 3.1.3 (*)
-| | \--- com.parse.bolts:bolts-tasks:1.4.0
-| +--- com.google.android.material:material:1.2.1 -> 1.9.0 (*)
-| +--- com.github.wordpress-mobile:react-native-video:5.2.0-wp-6
-| | +--- com.google.android.exoplayer:exoplayer:2.13.3
-| | | +--- com.google.android.exoplayer:exoplayer-core:2.13.3
-| | | | +--- androidx.annotation:annotation:1.1.0 -> 1.6.0 (*)
-| | | | +--- com.google.android.exoplayer:exoplayer-common:2.13.3
-| | | | | +--- androidx.annotation:annotation:1.1.0 -> 1.6.0 (*)
-| | | | | \--- com.google.guava:guava:27.1-android
-| | | | | +--- com.google.guava:failureaccess:1.0.1
-| | | | | \--- com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava
-| | | | \--- com.google.android.exoplayer:exoplayer-extractor:2.13.3
-| | | | +--- androidx.annotation:annotation:1.1.0 -> 1.6.0 (*)
-| | | | \--- com.google.android.exoplayer:exoplayer-common:2.13.3 (*)
-| | | +--- com.google.android.exoplayer:exoplayer-dash:2.13.3
-| | | | +--- com.google.android.exoplayer:exoplayer-core:2.13.3 (*)
-| | | | \--- androidx.annotation:annotation:1.1.0 -> 1.6.0 (*)
-| | | +--- com.google.android.exoplayer:exoplayer-hls:2.13.3
-| | | | +--- androidx.annotation:annotation:1.1.0 -> 1.6.0 (*)
-| | | | \--- com.google.android.exoplayer:exoplayer-core:2.13.3 (*)
-| | | +--- com.google.android.exoplayer:exoplayer-smoothstreaming:2.13.3
-| | | | +--- com.google.android.exoplayer:exoplayer-core:2.13.3 (*)
-| | | | \--- androidx.annotation:annotation:1.1.0 -> 1.6.0 (*)
-| | | +--- com.google.android.exoplayer:exoplayer-transformer:2.13.3
-| | | | +--- androidx.annotation:annotation:1.1.0 -> 1.6.0 (*)
-| | | | \--- com.google.android.exoplayer:exoplayer-core:2.13.3 (*)
-| | | \--- com.google.android.exoplayer:exoplayer-ui:2.13.3
-| | | +--- com.google.android.exoplayer:exoplayer-core:2.13.3 (*)
-| | | +--- androidx.annotation:annotation:1.1.0 -> 1.6.0 (*)
-| | | +--- androidx.recyclerview:recyclerview:1.1.0 -> 1.3.0 (*)
-| | | \--- androidx.media:media:1.2.1 (*)
-| | +--- androidx.annotation:annotation:1.1.0 -> 1.6.0 (*)
-| | +--- androidx.core:core:1.1.0 -> 1.12.0 (*)
-| | +--- androidx.media:media:1.1.0 -> 1.2.1 (*)
-| | +--- com.google.android.exoplayer:extension-okhttp:2.13.3
-| | | +--- com.google.android.exoplayer:exoplayer-common:2.13.3 (*)
-| | | +--- androidx.annotation:annotation:1.1.0 -> 1.6.0 (*)
-| | | \--- com.squareup.okhttp3:okhttp:3.12.11 -> 4.11.0 (*)
-| | \--- com.squareup.okhttp3:okhttp:${OKHTTP_VERSION} -> 4.11.0 (*)
-| +--- com.github.wordpress-mobile:react-native-slider:3.0.2-wp-4
-| +--- org.wordpress.react-native-libraries.v5:react-native-get-random-values:1.4.0
-| +--- org.wordpress.react-native-libraries.v5:react-native-safe-area-context:4.8.2
-| | \--- org.jetbrains.kotlin:kotlin-stdlib:1.8.21 -> 1.9.22 (*)
-| +--- org.wordpress.react-native-libraries.v5:react-native-screens:3.29.0
-| | +--- androidx.appcompat:appcompat:1.6.1 (*)
-| | +--- androidx.fragment:fragment:1.3.6 -> 1.6.2 (*)
-| | +--- androidx.coordinatorlayout:coordinatorlayout:1.2.0 (*)
-| | +--- androidx.swiperefreshlayout:swiperefreshlayout:1.1.0 (*)
-| | +--- com.google.android.material:material:1.9.0 (*)
-| | +--- androidx.core:core-ktx:1.9.0 -> 1.12.0 (*)
-| | +--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.21 -> 1.9.10 (*)
-| | \--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1 -> 2.6.2 (c)
-| +--- org.wordpress.react-native-libraries.v5:react-native-svg:14.0.0
-| +--- org.wordpress.react-native-libraries.v5:react-native-webview:13.6.1
-| | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.21 -> 1.9.22 (*)
-| | \--- androidx.webkit:webkit:1.4.0 -> 1.10.0 (*)
-| +--- org.wordpress.react-native-libraries.v5:react-native-masked-view:0.3.0
-| +--- org.wordpress.react-native-libraries.v5:react-native-clipboard:1.11.2
-| +--- org.wordpress.react-native-libraries.v5:react-native-fast-image:8.5.11
-| | +--- com.github.bumptech.glide:glide:4.12.0 -> 4.16.0
-| | | +--- com.github.bumptech.glide:gifdecoder:4.16.0
-| | | | \--- androidx.annotation:annotation:1.5.0 -> 1.6.0 (*)
-| | | +--- com.github.bumptech.glide:disklrucache:4.16.0
-| | | +--- com.github.bumptech.glide:annotations:4.16.0
-| | | +--- androidx.fragment:fragment:1.3.6 -> 1.6.2 (*)
-| | | +--- androidx.vectordrawable:vectordrawable-animated:1.1.0 (*)
-| | | +--- androidx.exifinterface:exifinterface:1.3.6 (*)
-| | | \--- androidx.tracing:tracing:1.0.0 -> 1.1.0 (*)
-| | \--- com.github.bumptech.glide:okhttp3-integration:4.12.0
-| | +--- com.github.bumptech.glide:glide:4.12.0 -> 4.16.0 (*)
-| | +--- com.squareup.okhttp3:okhttp:3.9.1 -> 4.11.0 (*)
-| | \--- androidx.annotation:annotation:1.0.0 -> 1.6.0 (*)
-| +--- org.wordpress.react-native-libraries.v5:react-native-reanimated:3.6.2
-| | +--- com.facebook.yoga:proguard-annotations:1.19.0
-| | +--- androidx.transition:transition:1.1.0 -> 1.4.1 (*)
-| | \--- androidx.core:core:1.9.0 -> 1.12.0 (*)
-| +--- org.wordpress.react-native-libraries.v5:react-native-gesture-handler:2.14.1
-| | +--- org.wordpress.react-native-libraries.v5:react-native-reanimated:3.6.2 (*)
-| | +--- androidx.appcompat:appcompat:1.6.1 (*)
-| | +--- androidx.core:core-ktx:1.9.0 -> 1.12.0 (*)
-| | \--- org.jetbrains.kotlin:kotlin-stdlib:1.8.21 -> 1.9.22 (*)
-| +--- org.wordpress.react-native-libraries.v5:react-native-linear-gradient:2.7.3
-| +--- org.wordpress.gutenberg-mobile:react-native-aztec:v1.115.0-alpha3
-| | +--- androidx.legacy:legacy-support-v4:1.0.0 (*)
-| | +--- androidx.gridlayout:gridlayout:1.0.0
-| | | +--- androidx.core:core:1.0.0 -> 1.12.0 (*)
-| | | \--- androidx.legacy:legacy-support-core-ui:1.0.0 (*)
-| | +--- androidx.cardview:cardview:1.0.0 (*)
-| | +--- androidx.appcompat:appcompat:1.2.0 -> 1.6.1 (*)
-| | +--- androidx.recyclerview:recyclerview:1.1.0 -> 1.3.0 (*)
-| | +--- org.wordpress:aztec:v1.9.0 -> v2.0 (*)
-| | +--- org.wordpress.aztec:wordpress-shortcodes:v1.9.0 -> v2.0 (*)
-| | +--- org.wordpress.aztec:wordpress-comments:v1.9.0 -> v2.0 (*)
-| | +--- org.wordpress.aztec:glide-loader:v1.9.0
-| | | +--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.10 -> 1.9.10 (*)
-| | | +--- org.wordpress:aztec:v1.9.0 -> v2.0 (*)
-| | | \--- com.github.bumptech.glide:glide:4.10.0 -> 4.16.0 (*)
-| | \--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.0 -> 1.9.10 (*)
-| \--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.0 -> 1.9.10 (*)
+| +--- org.wordpress.gutenberg-mobile:react-native-gutenberg-bridge:v1.115.0-alpha5
+| +--- com.facebook.fresco:animated-gif:2.0.0
+| | +--- com.parse.bolts:bolts-tasks:1.4.0
+| | +--- com.facebook.soloader:soloader:0.6.0 -> 0.10.5 (*)
+| | +--- com.facebook.fresco:fbcore:2.0.0 -> 3.1.3 (*)
+| | \--- com.facebook.fresco:animated-base:2.0.0
+| | +--- com.facebook.fresco:fbcore:2.0.0 -> 3.1.3 (*)
+| | +--- com.facebook.fresco:imagepipeline-base:2.0.0 -> 3.1.3 (*)
+| | +--- com.facebook.fresco:imagepipeline:2.0.0 -> 3.1.3 (*)
+| | +--- com.facebook.fresco:animated-drawable:2.0.0
+| | | +--- com.facebook.fresco:imagepipeline:2.0.0 -> 3.1.3 (*)
+| | | +--- com.facebook.fresco:drawee:2.0.0 -> 3.1.3 (*)
+| | | \--- com.facebook.fresco:fbcore:2.0.0 -> 3.1.3 (*)
+| | \--- com.parse.bolts:bolts-tasks:1.4.0
+| +--- com.google.android.material:material:1.2.1 -> 1.9.0 (*)
+| +--- com.github.wordpress-mobile:react-native-video:5.2.0-wp-6
+| | +--- com.google.android.exoplayer:exoplayer:2.13.3
+| | | +--- com.google.android.exoplayer:exoplayer-core:2.13.3
+| | | | +--- androidx.annotation:annotation:1.1.0 -> 1.6.0 (*)
+| | | | +--- com.google.android.exoplayer:exoplayer-common:2.13.3
+| | | | | +--- androidx.annotation:annotation:1.1.0 -> 1.6.0 (*)
+| | | | | \--- com.google.guava:guava:27.1-android
+| | | | | +--- com.google.guava:failureaccess:1.0.1
+| | | | | \--- com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava
+| | | | \--- com.google.android.exoplayer:exoplayer-extractor:2.13.3
+| | | | +--- androidx.annotation:annotation:1.1.0 -> 1.6.0 (*)
+| | | | \--- com.google.android.exoplayer:exoplayer-common:2.13.3 (*)
+| | | +--- com.google.android.exoplayer:exoplayer-dash:2.13.3
+| | | | +--- com.google.android.exoplayer:exoplayer-core:2.13.3 (*)
+| | | | \--- androidx.annotation:annotation:1.1.0 -> 1.6.0 (*)
+| | | +--- com.google.android.exoplayer:exoplayer-hls:2.13.3
+| | | | +--- androidx.annotation:annotation:1.1.0 -> 1.6.0 (*)
+| | | | \--- com.google.android.exoplayer:exoplayer-core:2.13.3 (*)
+| | | +--- com.google.android.exoplayer:exoplayer-smoothstreaming:2.13.3
+| | | | +--- com.google.android.exoplayer:exoplayer-core:2.13.3 (*)
+| | | | \--- androidx.annotation:annotation:1.1.0 -> 1.6.0 (*)
+| | | +--- com.google.android.exoplayer:exoplayer-transformer:2.13.3
+| | | | +--- androidx.annotation:annotation:1.1.0 -> 1.6.0 (*)
+| | | | \--- com.google.android.exoplayer:exoplayer-core:2.13.3 (*)
+| | | \--- com.google.android.exoplayer:exoplayer-ui:2.13.3
+| | | +--- com.google.android.exoplayer:exoplayer-core:2.13.3 (*)
+| | | +--- androidx.annotation:annotation:1.1.0 -> 1.6.0 (*)
+| | | +--- androidx.recyclerview:recyclerview:1.1.0 -> 1.3.0 (*)
+| | | \--- androidx.media:media:1.2.1 (*)
+| | +--- androidx.annotation:annotation:1.1.0 -> 1.6.0 (*)
+| | +--- androidx.core:core:1.1.0 -> 1.12.0 (*)
+| | +--- androidx.media:media:1.1.0 -> 1.2.1 (*)
+| | +--- com.google.android.exoplayer:extension-okhttp:2.13.3
+| | | +--- com.google.android.exoplayer:exoplayer-common:2.13.3 (*)
+| | | +--- androidx.annotation:annotation:1.1.0 -> 1.6.0 (*)
+| | | \--- com.squareup.okhttp3:okhttp:3.12.11 -> 4.11.0 (*)
+| | \--- com.squareup.okhttp3:okhttp:${OKHTTP_VERSION} -> 4.11.0 (*)
+| +--- com.github.wordpress-mobile:react-native-slider:3.0.2-wp-4
+| +--- org.wordpress.react-native-libraries.v5:react-native-get-random-values:1.4.0
+| +--- org.wordpress.react-native-libraries.v5:react-native-safe-area-context:4.8.2
+| | \--- org.jetbrains.kotlin:kotlin-stdlib:1.8.21 -> 1.9.22 (*)
+| +--- org.wordpress.react-native-libraries.v5:react-native-screens:3.29.0
+| | +--- androidx.appcompat:appcompat:1.6.1 (*)
+| | +--- androidx.fragment:fragment:1.3.6 -> 1.6.2 (*)
+| | +--- androidx.coordinatorlayout:coordinatorlayout:1.2.0 (*)
+| | +--- androidx.swiperefreshlayout:swiperefreshlayout:1.1.0 (*)
+| | +--- com.google.android.material:material:1.9.0 (*)
+| | +--- androidx.core:core-ktx:1.9.0 -> 1.12.0 (*)
+| | +--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.21 -> 1.9.10 (*)
+| | \--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1 -> 2.6.2 (c)
+| +--- org.wordpress.react-native-libraries.v5:react-native-svg:14.0.0
+| +--- org.wordpress.react-native-libraries.v5:react-native-webview:13.6.1
+| | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.21 -> 1.9.22 (*)
+| | \--- androidx.webkit:webkit:1.4.0 -> 1.10.0 (*)
+| +--- org.wordpress.react-native-libraries.v5:react-native-masked-view:0.3.0
+| +--- org.wordpress.react-native-libraries.v5:react-native-clipboard:1.11.2
+| +--- org.wordpress.react-native-libraries.v5:react-native-fast-image:8.5.11
+| | +--- com.github.bumptech.glide:glide:4.12.0 -> 4.16.0
+| | | +--- com.github.bumptech.glide:gifdecoder:4.16.0
+| | | | \--- androidx.annotation:annotation:1.5.0 -> 1.6.0 (*)
+| | | +--- com.github.bumptech.glide:disklrucache:4.16.0
+| | | +--- com.github.bumptech.glide:annotations:4.16.0
+| | | +--- androidx.fragment:fragment:1.3.6 -> 1.6.2 (*)
+| | | +--- androidx.vectordrawable:vectordrawable-animated:1.1.0 (*)
+| | | +--- androidx.exifinterface:exifinterface:1.3.6 (*)
+| | | \--- androidx.tracing:tracing:1.0.0 -> 1.1.0 (*)
+| | \--- com.github.bumptech.glide:okhttp3-integration:4.12.0
+| | +--- com.github.bumptech.glide:glide:4.12.0 -> 4.16.0 (*)
+| | +--- com.squareup.okhttp3:okhttp:3.9.1 -> 4.11.0 (*)
+| | \--- androidx.annotation:annotation:1.0.0 -> 1.6.0 (*)
+| +--- org.wordpress.react-native-libraries.v5:react-native-reanimated:3.6.2
+| | +--- com.facebook.yoga:proguard-annotations:1.19.0
+| | +--- androidx.transition:transition:1.1.0 -> 1.4.1 (*)
+| | \--- androidx.core:core:1.9.0 -> 1.12.0 (*)
+| +--- org.wordpress.react-native-libraries.v5:react-native-gesture-handler:2.14.1
+| | +--- org.wordpress.react-native-libraries.v5:react-native-reanimated:3.6.2 (*)
+| | +--- androidx.appcompat:appcompat:1.6.1 (*)
+| | +--- androidx.core:core-ktx:1.9.0 -> 1.12.0 (*)
+| | \--- org.jetbrains.kotlin:kotlin-stdlib:1.8.21 -> 1.9.22 (*)
+| +--- org.wordpress.react-native-libraries.v5:react-native-linear-gradient:2.7.3
+| +--- org.wordpress.gutenberg-mobile:react-native-aztec:v1.115.0-alpha5
+| | +--- androidx.legacy:legacy-support-v4:1.0.0 (*)
+| | +--- androidx.gridlayout:gridlayout:1.0.0
+| | | +--- androidx.core:core:1.0.0 -> 1.12.0 (*)
+| | | \--- androidx.legacy:legacy-support-core-ui:1.0.0 (*)
+| | +--- androidx.cardview:cardview:1.0.0 (*)
+| | +--- androidx.appcompat:appcompat:1.2.0 -> 1.6.1 (*)
+| | +--- androidx.recyclerview:recyclerview:1.1.0 -> 1.3.0 (*)
+| | +--- org.wordpress:aztec:v1.9.0 -> v2.0 (*)
+| | +--- org.wordpress.aztec:wordpress-shortcodes:v1.9.0 -> v2.0 (*)
+| | +--- org.wordpress.aztec:wordpress-comments:v1.9.0 -> v2.0 (*)
+| | +--- org.wordpress.aztec:glide-loader:v1.9.0
+| | | +--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.10 -> 1.9.10 (*)
+| | | +--- org.wordpress:aztec:v1.9.0 -> v2.0 (*)
+| | | \--- com.github.bumptech.glide:glide:4.10.0 -> 4.16.0 (*)
+| | \--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.0 -> 1.9.10 (*)
+| \--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.0 -> 1.9.10 (*)
+| \--- com.automattic:Automattic-Tracks-Android:3.5.0 (*)
-\--- com.automattic:Automattic-Tracks-Android:{strictly 3.4.0} -> 3.4.0 (*)
+\--- com.automattic:Automattic-Tracks-Android:{strictly 3.5.0} -> 3.5.0 (*)
Please review and act accordingly
|
I checked the This can be checked by profiling the APK shared in #20359 (comment) in Android Studio |
…nberg_sourcemaps`
Quality Gate passedIssues Measures |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Following #20359 (comment) , we had to make an adjustment in order to avoid including the source map file (index.android.bundle.map
) in the app. This file is only needed in the build process to upload it to Sentry and shouldn't be in the resulting APK.
Originally, we tried using exclude '**/*.bundle.map'
in this file (32db175) but for some reason, it was still adding the source map file. As a second approach, we are now copying the bundle and source map files to a separate folder and deleting the source map to avoid inclusion. The new folder will be used in the upload_gutenberg_sourcemaps
function when uploading the files to Sentry.
@AliSoftware since you already took a look at the original approach (https://github.com/wordpress-mobile/WordPress-Android/pull/20359/files#r1510915719), I wonder if you could double-check that this approach is valid. Thanks for your help 🙇 !
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sorry, I was focused on doing a CI deployment today, and only getting to this PR now, but I see it's already merged 🙂
I only skimmed the new code in build.gradle
but your explanations above makes sense to me so I think the approach sounds good 👍
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sorry, I was focused on doing a CI deployment today, and only getting to this PR now, but I see it's already merged 🙂
No worries @AliSoftware. Yes, we finally decided to merge the PR (internal ref: p1710254914686709/1710180482.367029-slack-C06G8EGHE1H) to unblock other potential PRs, as the counterpart Gutenberg changes were already merged. In any case, if we identify improvements to be made to this approach, we'll be happy to apply them in a separate PR.
I only skimmed the new code in
build.gradle
but your explanations above makes sense to me so I think the approach sounds good 👍
Great, thanks for taking a look and validating the approach 🙇 !
org_slug = sentry_properties[:'defaults.org'] | ||
|
||
# Bundle and source map files are copied to a specific folder as part of the build process. | ||
bundle_source_map_path = File.join(PROJECT_ROOT_FOLDER, 'WordPress', 'build', 'react-native-bundle-source-map') |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This folder is created in:
WordPress-Android/WordPress/build.gradle
Lines 727 to 731 in eadc097
copy { | |
from(outputDir) | |
into("${buildDir}/react-native-bundle-source-map") | |
include("*.bundle", "*.bundle.map") | |
} |
Related PRs:
This PR enables the error boundary at the editor and block level. It also connects Gutenberg Mobile to the Crash logging service in order to log JavaScript exceptions.
Additionally, it uploads to Sentry the JavaScript source map included in the React Native bridge Android library.
To Test:
Follow testing instructions from wordpress-mobile/gutenberg-mobile#6655.
Regression Notes
Potential unintended areas of impact
What I did to test those areas of impact (or what existing automated tests I relied on)
What automated tests I added (or what prevented me from doing so)
PR Submission Checklist:
RELEASE-NOTES.txt
if necessary.Testing Checklist: